package de.codecasa.andro.kasse;

import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.widget.Toast;


public class dbActions {

	
	private SQLiteDatabase database;
	private DatabaseManager dbHelper;
	
	private String[] allColumns_Artikel = { "id", "ANr", "text", "preis", "kat"};
	private String[] allColumns_Buchung = { "id", "RNr", "BNr", "ANr", "anzahl"};

	
	
	public dbActions(Context context) {
		dbHelper = new DatabaseManager(context);
	}
	public void open() throws SQLException {
		database = dbHelper.getWritableDatabase();
	}
	public void close() {
		dbHelper.close();
	}
	


	
	public dsrArtikel createArtikel(int ANr, String text, int preis) {
		ContentValues values = new ContentValues();
		values.put("ANr", ANr);
		values.put("text", text);
		values.put("preis", preis);

		long insertId = database.insert("artikel", null,
				values);
		
		
		Cursor cursor = database.query("artikel",allColumns_Artikel, "ID = " + insertId, null, null, null, null);
		cursor.moveToFirst();
	
		return cursorToArtikel(cursor);
	}
	public dsrBuchung createBuchung(int RNr, int BNr, int ANr, int anzahl) {
		ContentValues values = new ContentValues();
		values.put("RNr", RNr);
		values.put("BNr", BNr);
		values.put("ANr", ANr);
		values.put("anzahl", anzahl);
		

		long insertId = database.insert("buchungen", null, values);
		
		
		Cursor cursor = database.query("buchungen",allColumns_Buchung, "id = " + insertId, null, null, null, null);
		cursor.moveToFirst();
	
		return cursorToBuchung(cursor);
	}	

	public void removerBuchungen()
	{
		database.delete("buchungen", null,null);
	}
	
	protected List<dsrArtikel> getArtikel(String were) {
		List<dsrArtikel> ArtikelList = new ArrayList<dsrArtikel>();
		ArtikelList = new ArrayList<dsrArtikel>();
		
		Cursor cursor = database.query("artikel", allColumns_Artikel, were, null, null, null, null);
		cursor.moveToFirst();
		
		if(cursor.getCount() == 0) return ArtikelList;
		
		
		while (cursor.isAfterLast() == false) {
			dsrArtikel artikel = cursorToArtikel(cursor);
			ArtikelList.add(artikel);
			cursor.moveToNext();
		} 	

		cursor.close();
		
		return ArtikelList;
	}
	
	
	
	public void updateOne(dsrArtikel artikel, Context c)
	{
		
			ContentValues values = new ContentValues();
			values.put("ANr", artikel.getANr());
			values.put("text", artikel.gettext());
			values.put("preis", artikel.getpreis().toString());
			values.put("kat", String.valueOf(artikel.getKat()));
			
			
			database.update("artikel", values, "id=" + String.valueOf(artikel.getId()), null);
			
			
	
	}
	
	public void updateAllArtikel(List<dsrArtikel> aList, Context c)
	{
		for(dsrArtikel artikel : aList)
		{
			try
			{
				ContentValues values = new ContentValues();
				values.put("ANr", artikel.getANr());
				values.put("text", artikel.gettext());
				values.put("preis", artikel.getpreis().toString());
				database.update("artikel", values, "id = " + String.valueOf(artikel.getId()), null);
			}
			catch(Exception e)
			{
				Toast t = Toast.makeText(c, e.toString(), Toast.LENGTH_SHORT);
						t.show();
			}
		}
	}
	
	
	protected List<dsrBuchung> getBuchungen(String were) {
		List<dsrBuchung> BuchungenList = new ArrayList<dsrBuchung>();
		BuchungenList = new ArrayList<dsrBuchung>();
		
		Cursor cursor = database.query("buchungen", allColumns_Buchung, were, null, null, null, null);
		cursor.moveToFirst();
		
		if(cursor.getCount() == 0) return BuchungenList;
		
		
		while (cursor.isAfterLast() == false) {
			dsrBuchung buchung = cursorToBuchung(cursor);
			BuchungenList.add(buchung);
			cursor.moveToNext();
		} 	

		cursor.close();
		
		return BuchungenList;
	}	
	

	
	private dsrArtikel cursorToArtikel(Cursor cursor) {
		dsrArtikel tblArtikel = new dsrArtikel();
		tblArtikel.setId(cursor.getInt(0));
		tblArtikel.setANr(cursor.getInt(1));
		tblArtikel.settext(cursor.getString(2));
		tblArtikel.setpreis(new BigDecimal(cursor.getString(3)));
		tblArtikel.setKat(cursor.getInt(4));

		return tblArtikel;
	}

	private dsrBuchung cursorToBuchung(Cursor cursor) {
		dsrBuchung tblBuchung = new dsrBuchung();
		tblBuchung.setId(cursor.getInt(0));
		tblBuchung.setRNr(cursor.getInt(1));
		tblBuchung.setBNr(cursor.getInt(2));
		tblBuchung.setANr(cursor.getInt(3));
		tblBuchung.setanzahl(cursor.getInt(4));
		

		return tblBuchung;
	}
	
}
